home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / TCL1 / CDICTION / CSMARTTE.C < prev    next >
Text File  |  1990-01-12  |  2KB  |  78 lines

  1. /********************************************************************
  2. CSmartTETask.c
  3.  
  4.     see header for information
  5.     
  6. SUPERCLASS = CTask
  7. ********************************************************************/
  8.  
  9.  
  10. #include "CSmartTETask.h"
  11. #include "CSmartEditText.h"
  12. #include "CSmartDocument.h"
  13.  
  14. /*****************************************************************************/
  15. void CSmartTETask::ISmartTETask( CSmartEditText *theEditText, Int16 firstNameIndex,
  16.                         tTE_Command theCommand)
  17. {
  18.     Handle    h;
  19.     
  20.     CTask::ITask( firstNameIndex + (Int16) theCommand);
  21.     itsEditText = theEditText;
  22.     itsCommand = theCommand;
  23.     
  24.     itsEditText->GetSelection( &startSel, &endSel);
  25.     wasDirty = itsEditText->IsDirty();
  26.  
  27.     h = itsEditText->GetTextHandle();
  28.     /*FailNIL( h);*/
  29.     HandToHand( &h);
  30.     /*FailMemError();*/
  31.     
  32.     undoText = h;
  33.  
  34. }    /* CSmartTETask::ISmartTETask */
  35. /*****************************************************************************/
  36. void CSmartTETask::Undo( void)
  37. {
  38.     Handle    tmp;
  39.     Boolean tmpDirty;
  40.     Int16    tmpStart, tmpEnd;
  41.     
  42.     /* need to make sure the right edit text is active */
  43.     if (!itsEditText->IsActive() && itsEditText->itsSmartDoc)
  44.     {
  45.         itsEditText->itsSmartDoc->ActivateEditItem( itsEditText);
  46.     }
  47.     
  48.     tmp = itsEditText->GetTextHandle();
  49.     /*FailNIL( tmp);*/
  50.     HandToHand( &tmp);
  51.     /*FailMemError();*/
  52.  
  53.     itsEditText->GetSelection( &tmpStart, &tmpEnd);
  54.     
  55.     itsEditText->SetTextHandle( undoText);
  56.     DisposHandle( undoText);    /* CEditText makes a copy */
  57.     
  58.     itsEditText->SetSelection( startSel, endSel);
  59.  
  60.     undoText = tmp;
  61.     
  62.     tmpDirty = itsEditText->IsDirty();
  63.     itsEditText->SetDirty( wasDirty);
  64.     wasDirty = tmpDirty;
  65.     
  66.     startSel = tmpStart;
  67.     endSel = tmpEnd;
  68.  
  69. }    /* CSmartTETask::Undo */
  70. /*****************************************************************************/
  71. void CSmartTETask::Dispose( void)
  72. {
  73.     if (undoText) DisposHandle( undoText);
  74.     inherited::Dispose();
  75.  
  76. }    /* CSmartTETask::Dispose */
  77. /*****************************************************************************/    
  78.